@echo off
chcp 65001 > nul
setlocal enabledelayedexpansion

:: 设置重试次数
set MAX_RETRIES=3
set RETRY_COUNT=0

:start_service
echo [信息] 正在启动服务 (尝试 %RETRY_COUNT%/%MAX_RETRIES%)...

:: 检查 Ollama 服务
echo [信息] 检查 Ollama 服务...
curl -s http://localhost:11434/api/tags > nul 2>&1
if errorlevel 1 (
    echo [信息] 启动 Ollama 服务...
    start /B ollama serve
    timeout /t 10 /nobreak > nul
)

:: 检查虚拟环境
if not exist venv (
    echo [信息] 创建虚拟环境...
    python -m venv venv
    call venv\Scripts\activate.bat
    python -m pip install --upgrade pip
    python -m pip install requests fastapi uvicorn pydantic
    if exist requirements.txt (
        python -m pip install -r requirements.txt
    )
) else (
    call venv\Scripts\activate.bat
)

:: 启动 Python 服务
echo [信息] 启动智能代理服务...
start /B cmd /c "venv\Scripts\python.exe run_agent.py"

:: 等待服务启动
echo [信息] 等待服务就绪...
set /a WAIT_COUNT=0
:wait_loop
timeout /t 2 /nobreak > nul
curl -s http://localhost:8000/v1/model/status > nul 2>&1
if not errorlevel 1 goto service_ready
set /a WAIT_COUNT+=1
if !WAIT_COUNT! lss 15 goto wait_loop

:: 服务未就绪，尝试重试
set /a RETRY_COUNT+=1
if !RETRY_COUNT! lss !MAX_RETRIES! (
    echo [警告] 服务未就绪，正在重试...
    taskkill /F /IM python.exe /FI "WINDOWTITLE eq run_agent.py" > nul 2>&1
    timeout /t 2 /nobreak > nul
    goto start_service
) else (
    echo [错误] 服务启动失败，已达到最大重试次数
    goto cleanup
)

:service_ready
echo.
echo [成功] 服务已就绪！
echo 服务状态：
echo 1. Ollama 服务: 运行中
echo 2. 智能代理服务: 运行中
echo.
echo 按 Ctrl+C 停止服务
echo.

:: 保持窗口打开并监控服务状态
:monitor_loop
timeout /t 5 /nobreak > nul
curl -s http://localhost:8000/v1/model/status > nul 2>&1
if errorlevel 1 (
    echo [警告] 服务可能已停止，正在检查...
    set /a RETRY_COUNT+=1
    if !RETRY_COUNT! lss !MAX_RETRIES! (
        echo [信息] 尝试重新启动服务...
        goto start_service
    ) else (
        echo [错误] 服务异常，已达到最大重试次数
        goto cleanup
    )
)
goto monitor_loop

:cleanup
echo [信息] 正在清理服务...
taskkill /F /IM python.exe /FI "WINDOWTITLE eq run_agent.py" > nul 2>&1
taskkill /F /IM ollama.exe > nul 2>&1
echo [信息] 服务已停止
pause
exit /b 0 